package main

import "fmt"

//func test(char byte) byte {
//	return char + 1
//}

func main() {
	// 请编写一个程序，该程序可以接收一个字符，比如: a,b,c,d,e,f,g
	// a表示星期一，b表示星期二 …  根据用户的输入显示相依的信息.
	// 要求使用 switch 语句完成
	// 分析思路
	// 1 定义一个变量接收字符
	// 2 使用switch完成
	//var key byte
	//fmt.Println("请输入一个字符 a,b,c,d,e,f,g")
	//fmt.Scanf("%c", &key)
	//
	//switch test(key) + 1 {
	//case 'a':
	//	fmt.Println("周一, 猴子穿新衣")
	//case 'b':
	//	fmt.Println("周二，猴子当小二")
	//case 'c':
	//	fmt.Println("周三，猴子爬雪山")
	//// 默认
	//default:
	//	fmt.Println("输入有误...")
	//}

	//var n1 int32 = 5
	//var n2 int32 = 20
	//switch n1 {
	//case n2, 10, 5: // case 后面可以有多个表达式
	//	fmt.Println("ok1")
	//case 90:
	//	fmt.Println("ok2~")
	//
	//}

	// switch 后也可以不带表达式，类似 if --else分支来使用。
	//var age int = 10
	//
	//switch {
	//case age == 10:
	//	fmt.Println("age == 10")
	//case age == 20:
	//	fmt.Println("age == 20")
	//default:
	//	fmt.Println("没有匹配到")
	//}
	//
	//// case 中也可以对范围进行判断
	//var score int = 90
	//switch {
	//case score > 90:
	//	fmt.Println("成绩优秀..")
	//case score >= 70 && score <= 90:
	//	fmt.Println("成绩优良...")
	//case score >= 60 && score < 70:
	//	fmt.Println("成绩及格...")
	//default:
	//	fmt.Println("不及格")
	//}

	// switch 后也可以直接声明/定义一个变量，分号结束，不推荐
	//switch grade := 90; { // 在golang中，可以这样写
	//case grade > 90:
	//	fmt.Println("成绩优秀~..")
	//case grade >= 70 && grade <= 90:
	//	fmt.Println("成绩优良~...")
	//case grade >= 60 && grade < 70:
	//	fmt.Println("成绩及格~...")
	//default:
	//	fmt.Println("不及格~")
	//}

	// switch 的穿透 fallthrought
	var num int = 10
	switch num {
	case 10:
		fmt.Println("ok1")
		fallthrough // 默认只能穿透一层
	case 20:
		fmt.Println("ok2")
		fallthrough
	case 30:
		fmt.Println("ok3")
	default:
		fmt.Println("没有匹配到..")
	}
}
